01
CMake初识
CMake是什么 · 为什么选择CMake · 与传统Makefile对比 · 安装与验证
入门概念
02
第一个CMake项目
创建CMakeLists.txt · cmake_minimum_required · project · add_executable · 构建运行
实战快速开始
03
基础语法与变量
注释方式 · 变量定义与引用 · set()/message() · 变量作用域基础
语法变量
04
列表与字符串操作
list()命令 · 字符串操作 · 正则匹配 · 文件路径操作
列表字符串
05
数学运算与逻辑控制
math() · if/elseif/else · 逻辑运算符 · 比较运算符
逻辑条件
06
循环与函数
foreach · while · function()/macro() · 参数传递机制
循环函数
07
目标与属性
add_library · add_executable · target_include_directories · target_link_libraries
目标属性
08
生成器表达式
生成器表达式基础 · 条件编译 · 配置相关逻辑 · 调试/发布区分
表达式编译
09
查找依赖
find_package · Find模块机制 · Config文件模式 · 常用库查找示例
依赖find
10
子目录与嵌套项目
add_subdirectory · 构建树结构 · 跨目录变量传递 · 目录作用域
嵌套结构
11
安装与打包
install命令 · CPack配置 · 生成安装包 · 安装路径规范
安装打包
12
测试集成
enable_testing · add_test · CTest使用 · 测试覆盖率基础
测试CTest
13
自定义命令与目标
add_custom_command · add_custom_target · 生成源文件 · 构建后处理
自定义构建
14
工具链与交叉编译
CMAKE_TOOLCHAIN_FILE · 系统/处理器检测 · 交叉编译器配置 · Sysroot
交叉编译工具链
15
预设与缓存
CMakePresets.json · 缓存变量 · option() · 高级缓存编辑
预设缓存
16
模块化设计
编写Find模块 · 模块搜索路径 · 复用技巧 · 模块版本管理
模块Find
17
接口库与对象库
INTERFACE库 · OBJECT库 · 纯头文件库管理 · 编译选项传播
接口对象库
18
编译选项与特性
target_compile_options · target_compile_features · C++标准 · 编译器选项
编译特性
19
链接控制
target_link_options · 链接器脚本 · 静态/动态库选择 · 链接顺序
链接选项
20
源文件管理
aux_source_directory · file(GLOB) · 源文件分组 · 生成器表达式过滤
源文件GLOB
21
配置与生成文件
configure_file · 模板文件处理 · 版本头文件生成 · 配置时变量替换
配置模板
22
FetchContent与外部依赖
FetchContent声明/下载 · 依赖版本管理 · 覆盖本地依赖 · 与find_package协作
外部依赖Fetch
23
Sanitizer与代码质量
AddressSanitizer · UndefinedBehaviorSanitizer · 静态分析 · 代码格式化
质量Sanitizer
24
IDE集成
Visual Studio · Xcode · CodeBlocks · IDE特定属性
IDE生成器
25
性能优化
并行构建 · Unity构建 · 预编译头文件 · 链接时优化
优化性能
26
大型项目管理
多模块组织 · 依赖图管理 · 构建配置分层 · 版本号统一管理
大型项目模块
27
跨平台构建
Windows/Linux/macOS差异 · 编译器宏检测 · 平台特定源文件 · 路径兼容
跨平台兼容
28
调试CMake
--trace/--trace-source · 变量查看 · CMake调试器 · 常见错误排查
调试排查
29
最佳实践
现代CMake推荐写法 · 避免陷阱 · 代码风格指南 · 项目模板推荐
最佳实践风格
30
综合实战
完整C++项目:CMakeLists.txt设计 · 集成测试 · 打包发布 · CI/CD配置
实战完整项目